﻿// Dead Fraction POJ - 1930.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#define _CRT_SECURE_NO_WARNINGS


#include <iostream>
#include <string>
#include <limits>
#include <math.h>
#include <cmath>
#include <stdlib.h>


using namespace std;
//https://vjudge.csgrandeur.cn/problem/POJ-1930


/*
迈克在最后一刻拼命地赶着完成他的论文。在接下来的3天里，他需要将所有的研究笔记整理成较为连贯的形式。
不幸的是，他注意到他在计算方面非常粗心。每当他需要进行算术运算时，他只是将其输入计算器，并将他认为相关的答案写下来。
每当显示一个循环小数时，迈克只是简单地记录下前几位数字，然后加上“...”。例如，他可能会写下“0.3333...”而不是“1/3”。
不幸的是，他的结果需要精确的分数！他没有时间重新计算每个计算，所以他需要你写一个程序（而且要快！）来自动推断原始分数。
为了使这个过程可行，他假设原始分数总是产生给定数字序列的最简分数；他所说的最简是指分母最小的分数。
此外，他假设他没有忽略写下重要的数字；即使这个循环部分的小数展开全是零，也没有遗漏记录。
输入
有几个测试用例。对于每个测试用例，输入的一行是形如“0.dddd...”的字符串，其中dddd是由1到9个数字组成的，不能全为零。
最后一个用例后面跟着一行包含0的输入。
输出
对于每个用例，输出原始分数。

0.2...
0.20...
0.474612399...
0

2/9
1/5
1186531/2500000


0.308048647...
154024322/499999995


0.012345679...
1/81


0.1428571...
0.14285714...
0.142857142...
1/7


提示
请注意，一个精确的小数分数有两个循环展开（例如1/5 = 0.2000... = 0.19999...）。

题解
循环数的规律
0.233233 这种循环就是  233/999  分母9的出现个数是循环节的长度

0.666233233233 这种循环就是  666233-666 / 999000  也就是整个数减去非循环节 然后除以999000 
分母9的出现个数是循环节的长度 分母0出现的次数是非循环节的长度

对于题目给出的数据 未确定循环节的长度 所以要从长度1到长度len整个长度逐个尝试 得到分母最小的分数
如何得到最简分数？  求得分子分母的最大公约数d  然后分子分母都除以d
*/


typedef unsigned long long ULL;
string str;

ULL nine(int len) {  
	return pow(10, len )-1;
}

ULL gcd(ULL a, ULL b)
{
	return b ? gcd(b, a % b) : a;
}


void solve(string digit) {
	ULL len = digit.size();
	ULL mindown = numeric_limits<ULL>::max();
	ULL minup = 0;
	ULL a = atoi(digit.c_str());
	for (int i = 1; i <= len; i++) {
		ULL b = atoi(digit.substr(0, len - i).c_str());
		ULL down = nine(i);
		down *= pow(10, len - i);

		//计算aa/a + bb/b
		ULL up = a-b;

		ULL d = gcd(up, down);
		up = up / d; down = down / d;
		if (mindown > down) {
			mindown = down;
			minup = up;
		}
	}
	cout << minup << "/" << mindown << endl;

	return;
}


int main()
{
#if 0
	freopen("in.txt", "r", stdin);
	freopen("out.txt", "w", stdout);
#endif
	while (cin >> str) {
		if (str == "0") break;
		int len = str.length() - 5;
		string digit = str.substr(2, len);
		ULL n = atoi(digit.c_str());
		if (n == 0) {
			cout << "0/1" << endl;
			continue;
		}
		solve(digit);
	}

#if 0
	fclose(stdin);
	fclose(stdout);
	system("out.txt");
#endif
}

 